import axios from "axios";
import { message } from 'ant-design-vue';
axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";

// 创建axios实例 axios.create([config])
const service = axios.create({
  // axios中请求配置有baseURL选项，表示请求URL公共部分
  baseURL:'/api',
  // 超时
  timeout: 30000,
});
// request拦截器
service.interceptors.request.use(
  (config) => {
    // 是否需要设置 token
    config.headers["token"] = sessionStorage.getItem("toKenValue"); // 让每个请求携带自定义token 请根据实际情况自行修改
    return config;
  },
  (error) => {
    // console.log(error);
    Promise.reject(error);
  }
);

// 配置响应拦截
service.interceptors.response.use(
  (res) => {
    // debugger;
    // console.log("axios result:" , res);
    // debugger;
    // 未设置状态码则默认成功状态
    const code = res.data.code || 200;
    const status = res.request?.status;

    if (status === 403) {
        message.error("登录状态已过期，请重新登录", 0, ()=>{})
    } else if (status === 500) {
        message.error("服务器错误", 0, ()=>{})
      // return Promise.reject(new Error(msg));
    } else if (status !== 200) {
        message.error("未知错误", 0, ()=>{})
      // return Promise.reject("error");
    } else {
      return res.data;
    }
  },
  (error) => {
    // console.log("axios err" , error);
    let  msg  = error.response.statusText;
    message.error(msg, 0, ()=>{})
  }
);





// 响应拦截器
axios.interceptors.response.use(
  (res) => {
    // 未设置状态码则默认成功状态
    const code = res.data.code || 200;

    // 获取错误信息
    const msg = errorCode[code] || res.data.message || errorCode["default"];
    if (code === 403) {
        message.error("登录状态已过期，请重新登录", 0, ()=>{})
    } else if (code === 500) {
        message.error("服务器错误", 0, ()=>{})
      // return Promise.reject(new Error(msg));
    } else if (code !== 200) {
        message.error("位置错误", 0, ()=>{})
      // return Promise.reject("error");
    } else {
      return res.data;
    }
  },
  (error) => {
    // console.log("axios err" , error);
    let  msg  = error.response.statusText;
    message.error(msg, 0, ()=>{})
  }
);
export default service;